<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 当一个函数是在另一个函数中创建的时，那么该函数就被称为“嵌套”的
      function sayHiBye(firstName, lastName) {
        // 辅助嵌套函数使用如下
        function getFullName() {
          return firstName + ' ' + lastName
        }

        alert('Hello, ' + getFullName())
        alert('Bye, ' + getFullName())
      }

      sayHiBye('Dear', 'John')
      // 一个能够记住环境变量的函数、

      /* 
        1. 作为缓存 , 第二次使用对象的时候, 可以不用新建对象, 单例模式的实现
        2. 封装私有属性/变量 避免非法访问
      */
    </script>
  </body>
</html>
